package pr1.gui;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import pr1.bdd.Genero;

import com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException;

public class CrearSerie extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField nombre;
	private JTextField estreno;
	private JTextField fin;
	private GUIController gui;
	private JEditorPane sinopsis;
	private JEditorPane titular;
	private ArrayList<String> generos;
	private JComboBox comboBox;
	private ArrayList<Genero> arrayGeneros;

	/**
	 * Create the frame.
	 */
	public CrearSerie(GUIController gui) {
		super("Crear serie");
		this.gui = gui;
		this.generos = new ArrayList<String>();
		this.arrayGeneros = new ArrayList<Genero>();
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 507, 403);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel lblNombre = new JLabel("Nombre: ");
		lblNombre.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblNombre.setBounds(10, 21, 66, 14);
		contentPane.add(lblNombre);

		JLabel lblTitular = new JLabel("Titular: ");
		lblTitular.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblTitular.setBounds(10, 108, 66, 14);
		contentPane.add(lblTitular);

		JLabel lblSinopsis = new JLabel("Sinopsis: ");
		lblSinopsis.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblSinopsis.setBounds(10, 171, 66, 14);
		contentPane.add(lblSinopsis);

		JLabel lblAoDeEstreno = new JLabel("Año de estreno");
		lblAoDeEstreno.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblAoDeEstreno.setBounds(10, 274, 101, 14);
		contentPane.add(lblAoDeEstreno);

		JLabel lblAoDeFinalizacin = new JLabel("Año de finalización");
		lblAoDeFinalizacin.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblAoDeFinalizacin.setBounds(10, 299, 122, 14);
		contentPane.add(lblAoDeFinalizacin);

		nombre = new JTextField();
		nombre.setBounds(86, 18, 171, 20);
		contentPane.add(nombre);
		nombre.setColumns(10);

		estreno = new JTextField();
		estreno.setBounds(142, 268, 108, 20);
		contentPane.add(estreno);
		estreno.setColumns(10);

		fin = new JTextField();
		fin.setColumns(10);
		fin.setBounds(142, 296, 108, 20);
		contentPane.add(fin);

		sinopsis = new JEditorPane();
		sinopsis.setBounds(86, 170, 350, 87);
		contentPane.add(sinopsis);

		titular = new JEditorPane();
		titular.setBounds(86, 108, 345, 51);
		contentPane.add(titular);

		JButton btnAceptar = new JButton("Aceptar");
		btnAceptar.setBounds(195, 331, 89, 23);
		contentPane.add(btnAceptar);

		String[] generos = { "---", "Acción", "Aventura", "Terror", "Comedia","Crímen",
				"Policiaca", "Ciencia ficción", "Histórica", "Política",
				"Thriller", "Drama" };
		comboBox = new JComboBox(generos);
		comboBox.setBounds(86, 58, 122, 20);

		contentPane.add(comboBox);

		JLabel lblGnero = new JLabel("Género: ");
		lblGnero.setFont(new Font("Tahoma", Font.BOLD, 11));
		lblGnero.setBounds(10, 61, 66, 14);
		contentPane.add(lblGnero);

		JButton btnAadir = new JButton("Añadir género");
		btnAadir.addActionListener(new generoListener());
		btnAadir.setBounds(241, 57, 137, 23);
		contentPane.add(btnAadir);
		btnAceptar.addActionListener(new aceptarListener());

		setVisible(true);
		this.setLocationRelativeTo(null);
	}

	private class aceptarListener implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent e) {

			int anoFin = 0;
			if (!fin.getText().isEmpty()) {
				anoFin = Integer.parseInt(fin.getText());
			}

			try {
				int anoEstreno = Integer.parseInt(estreno.getText());
				gui.creaSerie(nombre.getText(), titular.getText(),
						sinopsis.getText(), anoEstreno, anoFin).setGeneros(
						generos);
				gui.insertarGeneros(arrayGeneros);

				setVisible(false);

			} catch (NumberFormatException x) {
				JOptionPane.showMessageDialog(new JFrame(),
						"Por favor introduzca el año en forma numérica",
						"Error", JOptionPane.ERROR_MESSAGE, null);
			}

		}

	}

	private class generoListener implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent arg0) {
			if (!comboBox.getSelectedItem().toString().equals("---")) {
				generos.add(comboBox.getSelectedItem().toString());

				JOptionPane.showMessageDialog(new JFrame(), "Género añadido",
						"", JOptionPane.INFORMATION_MESSAGE, null);

				arrayGeneros.add(new Genero(nombre.getText(), comboBox
						.getSelectedItem().toString()));

			}

		}

	}
}
